78D - Archer's Shot - CodeForces Solution


binary search geometry math two pointers *2300

Please click on ads to support us..

C++ Code:

#include <iostream>
#include <cmath>

using namespace std;

long long r, x, y;

bool check(long long x, long long y)
{
    return (((x+1) * (x+1) + 3 * (y+1) * (y+1)) <= (4 * r * r) && ((x+2) * (x+2) + 3 * y * y) <= (4 * r * r));
}


int main()
{
    cin >> r;
    y = 0, x = 0;
    while (check(x, y)) y+=2;
    long long ans = y - 1;
    while (x + 1 <= 2*r)
    {
        if (x != 0)
            ans += 2 * (y + 1);
        x+=3;
        y+=1;
        while (y>=0 && !check(x, y)) y-=2;
    }
    cout <<  ans;
}


Comments

Submit
0 Comments
More Questions

768A - Oath of the Night's Watch
156C - Cipher
545D - Queue
459B - Pashmak and Flowers
1538A - Stone Game
1454C - Sequence Transformation
165B - Burning Midnight Oil
17A - Noldbach problem
1350A - Orac and Factors
1373A - Donut Shops
26A - Almost Prime
1656E - Equal Tree Sums
1656B - Subtract Operation
1656A - Good Pairs
1367A - Short Substrings
87A - Trains
664A - Complicated GCD
1635D - Infinite Set
1462A - Favorite Sequence
1445B - Elimination
1656C - Make Equal With Mod
567A - Lineland Mail
1553A - Digits Sum
1359B - New Theatre Square
766A - Mahmoud and Longest Uncommon Subsequence
701B - Cells Not Under Attack
702A - Maximum Increase
1656D - K-good
1426A - Floor Number
876A - Trip For Meal